package com.admin.system.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.admin.base.BaseController;
import com.admin.base.Page;
import com.admin.base.Response;
import com.alibaba.excel.EasyExcel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.admin.system.entity.SystemLog;
import com.admin.system.service.SystemLogService;
import com.admin.system.vo.query.SystemLogQuery;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;

/**
 *
 */
@Controller
@RequestMapping(value = "/systemLog")
public class SystemLogController extends BaseController {

    @Autowired
    SystemLogService systemLogService;

    /**
     * 列表页面
     */
    @RequestMapping(value = "/list")
    public ModelAndView list(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        mav.setViewName("system/systemLog/list");
        return mav;
    }

    /**
     * 分页查询数据
     */
    @RequestMapping(value = "/paging")
    @ResponseBody
    public Response paging(HttpServletRequest request, HttpServletResponse response, SystemLogQuery query) {
        Page<SystemLog> page = systemLogService.pagingByConditions(query);
        return Response.ok(page);
    }

    /**
     * 数据导出
     */
    @GetMapping(value = "/download")
    public void download(HttpServletRequest request, HttpServletResponse response, SystemLogQuery query) throws IOException {
        List<SystemLog> systemLogs = systemLogService.listByConditions(query);
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("日志记录", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), SystemLog.class).sheet("日志记录").doWrite(systemLogs);
    }


    /**
     * 新增页面
     */
    @RequestMapping(value = "/toAdd")
    public ModelAndView toAdd(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        mav.setViewName("system/systemLog/add");
        return mav;
    }

    /**
     * 保存数据
     */
    @RequestMapping(value = "/add")
    @ResponseBody
    public Response add(HttpServletRequest request, HttpServletResponse response, SystemLog systemLog) {
        systemLogService.add(systemLog);
        return Response.ok();
    }

    /**
     * 删除数据
     */
    @RequestMapping(value = "/delete")
    @ResponseBody
    public Response delete(HttpServletRequest request, HttpServletResponse response, Integer[] id) {
        systemLogService.delete(id);
        return Response.ok();
    }

    /**
     * 编辑页面
     */
    @RequestMapping(value = "/toEdit")
    public ModelAndView toEdit(HttpServletRequest request, HttpServletResponse response, ModelAndView mav, Integer id) {
        SystemLog systemLog = systemLogService.queryById(id);
        mav.addObject(systemLog);
        mav.setViewName("system/systemLog/edit");
        return mav;
    }

    /**
     * 详情页面
     */
    @RequestMapping(value = "/detail")
    public ModelAndView detail(HttpServletRequest request, HttpServletResponse response, ModelAndView mav, Integer id) {
        SystemLog systemLog = systemLogService.queryById(id);
        mav.addObject(systemLog);
        mav.setViewName("system/systemLog/detail");
        return mav;
    }

    /**
     * 更新数据
     */
    @RequestMapping(value = "/update")
    @ResponseBody
    public Response update(HttpServletRequest request, HttpServletResponse response, SystemLog systemLog) {
        systemLogService.update(systemLog);
        return Response.ok();
    }
}
